//package com.watson.quartzdemo.job;
//
//import org.quartz.*;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//
//import java.util.Date;
//
///**
// * @author huhao
// * @Description: 定时发送器
// * 提供定时发送邮件和发送短信的功能
// * @date Jan 27, 2014 5:27:12 PM
// */
//public class SendTiming {
//    @Autowired
//    Scheduler scheduler;
//    private static Logger log = LoggerFactory.getLogger(SendTiming.class);
//
//    /**
//     * @param @param jobName 任务名称【唯一】
//     * @param @param triggerName 触发器名称【唯一】(一个任务可有多个触发器)
//     * @param @param sendDate
//     * @param @param emailMessage
//     * @return void
//     * @throws
//     * @Description: 根据指定的日期定时发送邮件(在任务已经存在时)
//     * @author huhao
//     * @date Jan 27, 2014 5:40:00 PM
//     */
//    public static void sendEmailForNewTrigger(String jobName, String triggerName, Date sendDate,
//                                              EmailMessage emailMessage) {
//        try {
//            JobDetail job = scheduler.getJobDetail(jobName, "group_email");
//            job.setRequestsRecovery(true);
//            if (job != null) {
//                SimpleTrigger trigger = new SimpleTrigger(triggerName, "group_email", sendDate);
//                trigger.setJobName(jobName);
//                trigger.setJobGroup("group_email");
//                //job.getJobDataMap().put("isNewJob", false);
//                sched.scheduleJob(trigger);
//            }
//            log.info(job.getFullName() + " will run at: " + sendDate);
//
//        } catch (SchedulerException e) {
//            log.error(e.toString());
//            throw new RuntimeException(e.getMessage());
//        }
//
//    }
//
//    /**
//     * @param @param jobName
//     * @param @param triggerName
//     * @param @param sendDate
//     * @param @param emailMessage
//     * @return void
//     * @throws
//     * @Description: 根据指定的日期定时发送邮件(任务新建)
//     * @author huhao
//     * @date Jan 27, 2014 6:04:42 PM
//     */
//    public static void sendEmailForNewJob(String jobName, String triggerName, Date sendDate,
//                                          EmailMessage emailMessage) {
//        try {
//            Scheduler sched = QuartzUtils.getScheduler();
//            JobDetail job = new JobDetail(jobName, "group_email", EmailSenderJob.class);
//            job.setRequestsRecovery(true);
//            job.getJobDataMap().put("emailMessage", emailMessage);
//            Trigger trigger = new SimpleTrigger(triggerName, "group_email", sendDate);
//            log.info(job.getFullName() + " will run at: " + sendDate);
//            if (!sched.isStarted()) {
//                sched.start();
//            }
//            sched.scheduleJob(job, trigger);
//        } catch (SchedulerException e) {
//
//            log.error(e.toString());
//            throw new RuntimeException(e.getMessage());
//        }
//
//    }
//
//    /**
//     * @param @param jobName
//     * @param @param triggerName
//     * @param @param sendDate
//     * @param @param smsMessage
//     * @return void
//     * @throws
//     * @Description: 创建一个新的触发器，执行短信发送的任务
//     * @author huhao
//     * @date Jan 28, 2014 10:22:16 AM
//     */
//    public static void sendSmsForNewTrigger(String jobName, String triggerName, Date sendDate,
//                                            SmsMessage smsMessage) {
//        try {
//            Scheduler sched = QuartzUtils.getScheduler();
//            JobDetail job = sched.getJobDetail(jobName, "group_sms");
//            job.setRequestsRecovery(true);
//            if (job != null) {
//                SimpleTrigger trigger = new SimpleTrigger(triggerName, "group_sms", sendDate);
//                trigger.setJobName(jobName);
//                trigger.setJobGroup("group_sms");
//                sched.scheduleJob(trigger);
//            }
//            log.info(job.getFullName() + " will run at: " + sendDate);
//
//        } catch (SchedulerException e) {
//
//            log.error(e.toString());
//            throw new RuntimeException(e.getMessage());
//        }
//
//    }
//
//    /**
//     * @param @param jobName
//     * @param @param triggerName
//     * @param @param sendDate
//     * @param @param smsMessage
//     * @return void
//     * @throws
//     * @Description: 创建一个新任务，进行短信的发送
//     * @author huhao
//     * @date Jan 28, 2014 10:17:36 AM
//     */
//    public static void sendSmsForNewJob(String jobName, String triggerName, Date sendDate,
//                                        SmsMessage smsMessage) {
//        try {
//            Scheduler sched = QuartzUtils.getScheduler();
//            JobDetail job = new JobDetail(jobName, "group_sms", SmsSenderJob.class);
//            job.setRequestsRecovery(true);
//            job.getJobDataMap().put("smsMessage", smsMessage);
//            Trigger trigger = new SimpleTrigger(triggerName, "group_sms", sendDate);
//            log.info(job.getFullName() + " will run at: " + sendDate);
//            if (!sched.isStarted()) {
//                sched.start();
//            }
//            sched.scheduleJob(job, trigger);
//        } catch (SchedulerException e) {
//            log.error(e.toString());
//            throw new RuntimeException(e.getMessage());
//        }
//
//    }
//
//    /**
//     * @param @param jobName
//     * @param @param triggerName
//     * @param @param remindDate
//     * @param @param smsMessage
//     * @return void
//     * @throws
//     * @Description: 创建一个新的触发器，执行桌面提醒任务
//     * @author 黄殿玺
//     * @date Jan 28, 2014 10:22:16 AM
//     */
//    public static void deskRemindForNewTrigger(String jobName, String triggerName, Date remindDate,
//                                               RemindMessage remindMessage) {
//        try {
//            Scheduler sched = QuartzUtils.getScheduler();
//            JobDetail job = sched.getJobDetail(jobName, "group_desk");
//            job.setRequestsRecovery(true);
//            if (job != null) {
//                SimpleTrigger trigger = new SimpleTrigger(triggerName, "group_desk", remindDate);
//                trigger.setJobName(jobName);
//                trigger.setJobGroup("group_desk");
//                sched.scheduleJob(trigger);
//            }
//            log.info(job.getFullName() + " will run at: " + remindDate);
//
//        } catch (SchedulerException e) {
//
//            log.error(e.toString());
//            throw new RuntimeException(e.getMessage());
//        }
//
//    }
//
//    /**
//     * @param @param jobName
//     * @param @param triggerName
//     * @param @param sendDate
//     * @param @param smsMessage
//     * @return void
//     * @throws
//     * @Description: 创建一个新任务，进行桌面提醒
//     * @author 黄殿玺
//     * @date Jan 28, 2014 10:17:36 AM
//     */
//    public static void deskRemindForNewJob(String jobName, String triggerName, Date remindDate,
//                                           RemindMessage remindMessage) {
//        try {
//            Scheduler sched = QuartzUtils.getScheduler();
//            JobDetail job = new JobDetail(jobName, "group_desk", DeskSenderJob.class);
//            job.setRequestsRecovery(true);
//            job.getJobDataMap().put("remindMessage", remindMessage);
//            Trigger trigger = new SimpleTrigger(triggerName, "group_desk", remindDate);
//            log.info(job.getFullName() + " will run at: " + remindDate);
//            if (!sched.isStarted()) {
//                System.out.println("sched ... start");
//                sched.start();
//            }
//            sched.scheduleJob(job, trigger);
//        } catch (SchedulerException e) {
//            log.error(e.toString());
//            throw new RuntimeException(e.getMessage());
//        }
//    }
//}